### 很好
问题关键在于,迭代中，碰到相同字符如何马上返回至上一个相同字符的下标好重新遍历出子字符串。题目其实有点误导,abcabc其实bca也是最长子串之一，如果写成碰到相同字符就刷新最大长度然后马上就遍历下去是不行的。

### 代码

```cpp
class Solution {
public:
    int lengthOfLongestSubstring(string s) {
    set<int>se;
    int l=0,r=0,max_long=0;;
    for(int i=0;i<s.size();i++)
    {
        if(se.count(s[i])==0)
        {
            se.insert(s[i]);
            if(i-l+1>max_long)
            {
                max_long=i-l+1;
                //cout<<l<<" "<<i<<" "<<max_long<<endl;
            }
        }
        else
        {
            // l<i 这个条件也太阴间了 
            while(s[l]!=s[i]&&l<i)
            {
                se.erase(s[l]);
                l++;
            }
            l++;
        }
    }
return max_long;
    }
};
```